package com.mgy.shardingjdbc.test.dao.mapper.notepad;

import com.mgy.db.TableRouter;
import com.mgy.db.sharding.annotation.MybatisMapper;
import com.mgy.shardingjdbc.test.domain.notepad.BigData;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.type.Alias;

import java.util.List;

/**
 * (BigData)表数据库访问层
 *
 * @author maguoyong
 * @since 2019-12-23 21:06:41
 */
@MybatisMapper("big_data")
public interface BigDataDao {
    /**
     * 通过ID查询单条数据
     *
     * @param id          主键
     * @param tableRouter 分库对象
     * @return 实例对象
     */
    BigData queryById(Integer id, TableRouter tableRouter);

    /**
     * 通过主键删除数据
     *
     * @param id          主键
     * @param tableRouter 分库对象
     * @return 影响行数
     */
    Integer deleteById(Integer id, TableRouter tableRouter);

    /**
     * 新增数据（实体对象带分库分表信息）
     *
     * @param bigData 实例对象
     * @return 影响行数
     */
    Long insert(@Param("obj") BigData bigData);

    /**
     * 新增数据（实体对象不带分库分表信息，TableRouter带分库分表信息）
     *
     * @param bigData     实例对象
     * @param tableRouter 分库对象
     * @return 影响行数
     */
    Long insert(@Param("obj") BigData bigData, TableRouter tableRouter);

    /**
     * 修改数据
     *
     * @return 影响行数
     */
    void batchInsert(@Param("list") List<BigData> list, TableRouter tableRouter);

    /**
     * 修改数据
     *
     * @param bigData 实例对象
     * @return 影响行数
     */
    Integer update(@Param("obj") BigData bigData);

    /**
     * 修改数据
     *
     * @param bigData 实例对象
     * @return 影响行数
     */
    Integer update(@Param("obj") BigData bigData, TableRouter tableRouter);

}